 #ifndef THREAD_POOL_H__
 #define THREAD_POOL_H__
 
 #include <pthread.h>
 
 /* 要执行的任务链表 */
//函数指针。名字叫 routine，这个函数的返回值是void *(一个指针）,参数是void *（一个指针）
//指针的指针指向这个指针的地址

 typedef struct tpool_work
 {
     void               *(*do_task)(void *);      /* 任务要执行的函数 */
     void                *arg;                    /* 传入任务函数的参数  */
     struct tpool_work   *next;                   /*指向下一个任务节点的指针*/ 
 } tpool_work_t;
 //采用链表来指向下一个任务 符合FIFO
 

 typedef struct tpool
 {
     int             max_thr_num;                /* 最大线程数 */
     pthread_t       *thr_id;                    /* 线程ID数组 */
     tpool_work_t    *queue_head;                /* 线程链表 */

 } tpool_t;


 int tpool_create(int max_thr_num);
 

 void tpool_destroy();
 

 int tpool_add_work(void *(*routine)(void *), void *arg);
 
 #endif



